home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / progs / editor / frexxed / fpl / filltext.fpl < prev    next >
Text File  |  1996-01-05  |  2KB  |  83 lines

  1. // $Id: FillText.FPL 1.3 1996/01/02 10:14:49 jskov Exp jskov $
  2. // $VER: FillText.FPL 1.2 (01.01.96) © Jesper Skov
  3.  
  4. export string ft_indention="";
  5.  
  6. //»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» fillText() ««
  7. export void fillText()
  8. {
  9.   int i=0;
  10.  
  11.   if (ReadInfo("line_length")==1){
  12.     ReturnStatus("Place cursor in a paragraph!");
  13.     return;
  14.   }
  15.  
  16.   Visible(0);
  17.  
  18.   // Find topmost line
  19.   while((ReadInfo("line_length")>1) && ReadInfo("line")>1)
  20.     CursorUp();
  21.   if(ReadInfo("line")!=1)
  22.     CursorDown();
  23.  
  24.   CursorDown();Home();
  25.  
  26.   // Put all lines in paragraph on same line
  27.   while(ReadInfo("line_length")>1){
  28.     Backspace();Clean("Output(\" \");");
  29.     CursorDown();Home();
  30.   }
  31.   CursorUp();
  32.  
  33.   // Copy&delete leading spaces
  34.   while(Isspace(GetChar(i)))
  35.     i++;
  36.   ft_indention = substr(GetLine(),0,i);
  37.   Delete(i);
  38.  
  39.   BlockMark(0);
  40.   BlockMark(2,0,ReadInfo("line"),GetCursor(ReadInfo("line_length")),ReadInfo("line"));
  41.  
  42.   Home();
  43.   Replace(1,"\t"," ","=bf+",ReadInfo("line_length")); // replace tabs with space
  44.   Home();
  45.   Replace(1,"  +"," ","=bfw+",ReadInfo("line_length")); // replace multiple spaces with space
  46.   Home();
  47.   if(ReadInfo("fill_text_US")){                // if wanted, set US double space
  48.     Replace(1,". ",".  ","=bf+");
  49.     Home();
  50.   }
  51.  
  52.   BlockMark(0);
  53.  
  54.   Clean("Output(ft_indention);");
  55.  
  56.   // Now split line up in valid sized single lines
  57.   while(GetCursor(ReadInfo("line_length"))>ReadInfo("wall_right")){
  58.     // If a word is crossing the wall_right, go left of it.
  59.     GotoLine(ReadInfo("line"),GetByte(ReadInfo("wall_right")));
  60.     while(!Isspace(GetChar(ReadInfo("byte_position")-1))){
  61.       CursorLeftWord();
  62.       if (ReadInfo("column")==1){            // very long word!
  63.         CursorRightWord();                    // simply go back!
  64.         break;
  65.       }
  66.     }
  67.     Backspace();
  68.     if (Isspace(GetChar(ReadInfo("byte_position")-1)))
  69.       Backspace();                            // clear extra for US .
  70.     Clean("Output(\"\n\"+ft_indention);");
  71.   }     
  72.  
  73.   // Delete last space there may be after a .
  74.   GotoLine(ReadInfo("line"),-1);
  75.   if(Isspace(GetChar(ReadInfo("byte_position")-1)))
  76.     Backspace();
  77.  
  78.   Visible(1);RedrawScreen();
  79. }
  80.  
  81. //»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» Info vars ««
  82. ConstructInfo("fill_text_US","","","WBG(display)","",0,1,0);
  83.